package com.jl15988.pguard.platform;

/**
 * 进程平台接口
 * 定义不同操作系统平台的进程操作行为
 *
 * @author jl15988
 * @since 1.0.0
 */
public interface ProcessPlatform {
    /**
     * 创建进程
     *
     * @param command              命令
     * @param workingDirectory     工作目录
     * @param environmentVariables 环境变量
     * @return Process对象
     */
    Process createProcess(String command, String workingDirectory, String[] environmentVariables) throws Exception;

    /**
     * 监控指定PID的进程
     *
     * @param pid 进程ID
     * @return Process对象
     */
    Process monitorProcess(long pid) throws Exception;

    /**
     * 关闭进程
     *
     * @param pid 进程ID
     * @return 是否成功
     */
    boolean killProcess(long pid) throws Exception;

    /**
     * 检查进程是否存在
     *
     * @param pid 进程ID
     * @return 是否存在
     */
    boolean isProcessExist(long pid);

    /**
     * 通过端口查找进程ID
     *
     * @param port 端口号
     * @return 进程ID，如果未找到返回-1
     */
    long findProcessIdByPort(int port);

    /**
     * 获取进程信息
     *
     * @param pid 进程ID
     * @return 进程信息
     */
    PlatformProcessInfo getProcessInfo(long pid) throws Exception;

    /**
     * 获取平台名称
     *
     * @return 平台名称
     */
    String getPlatformName();
}
